home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vcls / nimgvc10.000 / testdlg.cpp < prev    next >
C/C++ Source or Header  |  1996-04-08  |  8KB  |  332 lines

  1. // TestDlg.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "NEDImage.h"
  6. #include "TestDlg.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CAboutDlg dialog used for App About
  16.  
  17. class CAboutDlg : public CDialog
  18. {
  19. public:
  20.     CAboutDlg();
  21.  
  22. // Dialog Data
  23.     //{{AFX_DATA(CAboutDlg)
  24.     enum { IDD = IDD_ABOUTBOX };
  25.     //}}AFX_DATA
  26.  
  27.     // ClassWizard generated virtual function overrides
  28.     //{{AFX_VIRTUAL(CAboutDlg)
  29.     protected:
  30.     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  31.     //}}AFX_VIRTUAL
  32.  
  33. // Implementation
  34. protected:
  35.     //{{AFX_MSG(CAboutDlg)
  36.     //}}AFX_MSG
  37.     DECLARE_MESSAGE_MAP()
  38. };
  39.  
  40. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  41. {
  42.     //{{AFX_DATA_INIT(CAboutDlg)
  43.     //}}AFX_DATA_INIT
  44. }
  45.  
  46. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  47. {
  48.     CDialog::DoDataExchange(pDX);
  49.     //{{AFX_DATA_MAP(CAboutDlg)
  50.     //}}AFX_DATA_MAP
  51. }
  52.  
  53. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  54.     //{{AFX_MSG_MAP(CAboutDlg)
  55.         // No message handlers
  56.     //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58.  
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CTestDlg dialog
  61.  
  62. CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
  63.     : CDialog(CTestDlg::IDD, pParent)
  64. {
  65.     //{{AFX_DATA_INIT(CTestDlg)
  66.         // NOTE: the ClassWizard will add member initialization here
  67.     //}}AFX_DATA_INIT
  68.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  69. }
  70.  
  71. void CTestDlg::DoDataExchange(CDataExchange* pDX)
  72. {
  73.     CDialog::DoDataExchange(pDX);
  74.     //{{AFX_DATA_MAP(CTestDlg)
  75.     DDX_Control(pDX, IDC_NEDIMAGECTRL1, m_ImageCtl);
  76.     //}}AFX_DATA_MAP
  77. }
  78.  
  79. BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
  80.     //{{AFX_MSG_MAP(CTestDlg)
  81.     ON_WM_SYSCOMMAND()
  82.     ON_WM_PAINT()
  83.     ON_WM_QUERYDRAGICON()
  84.     ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
  85.     ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
  86.     ON_COMMAND(ID_DEVICE_PRINTER, OnDevicePrinter)
  87.     ON_COMMAND(ID_DEVICE_SCREEN, OnDeviceScreen)
  88.     ON_COMMAND(ID_HELP_ABOUTNEDIMAGEOCX, OnHelpAboutnedimageocx)
  89.     ON_COMMAND(ID_IMAGE_COLORREDUCTION_ERRORDIFFUSION, OnImageColorreductionErrordiffusion)
  90.     ON_COMMAND(ID_IMAGE_COLORREDUCTION_MEDIANCUT, OnImageColorreductionMediancut)
  91.     ON_COMMAND(ID_IMAGE_COLORREDUCTION_ORDERED, OnImageColorreductionOrdered)
  92.     ON_COMMAND(ID_IMAGE_FITTYPE_BESTFIT, OnImageFittypeBestfit)
  93.     ON_COMMAND(ID_IMAGE_FITTYPE_HORIZONTALFIT, OnImageFittypeHorizontalfit)
  94.     ON_COMMAND(ID_IMAGE_FITTYPE_ONETOONE, OnImageFittypeOnetoone)
  95.     ON_COMMAND(ID_IMAGE_FITTYPE_VERTICALFIT, OnImageFittypeVerticalfit)
  96.     ON_COMMAND(ID_IMAGE_IMAGEHEIGHT, OnImageImageheight)
  97.     ON_COMMAND(ID_IMAGE_IMAGEWIDTH, OnImageImagewidth)
  98.     ON_COMMAND(ID_IMAGE_NUMBEROFCOLORS, OnImageNumberofcolors)
  99.     ON_COMMAND(ID_IMAGE_ROTATE_180, OnImageRotate180)
  100.     ON_COMMAND(ID_IMAGE_ROTATE_270, OnImageRotate270)
  101.     ON_COMMAND(ID_IMAGE_ROTATE_90, OnImageRotate90)
  102.     ON_COMMAND(ID_FILE_EXIT, OnOK)
  103.     ON_WM_SIZE()
  104.     //}}AFX_MSG_MAP
  105. END_MESSAGE_MAP()
  106.  
  107. /////////////////////////////////////////////////////////////////////////////
  108. // CTestDlg message handlers
  109.  
  110. BOOL CTestDlg::OnInitDialog()
  111. {
  112.     CDialog::OnInitDialog();
  113.  
  114.     // Add "About..." menu item to system menu.
  115.  
  116.     // IDM_ABOUTBOX must be in the system command range.
  117.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  118.     ASSERT(IDM_ABOUTBOX < 0xF000);
  119.  
  120.     CMenu* pSysMenu = GetSystemMenu(FALSE);
  121.     CString strAboutMenu;
  122.     strAboutMenu.LoadString(IDS_ABOUTBOX);
  123.     if (!strAboutMenu.IsEmpty())
  124.     {
  125.         pSysMenu->AppendMenu(MF_SEPARATOR);
  126.         pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  127.     }
  128.  
  129.     SetIcon(m_hIcon, TRUE);            // Set big icon
  130.     SetIcon(m_hIcon, FALSE);        // Set small icon
  131.     
  132.     // TODO: Add extra initialization here
  133.     
  134.     return TRUE;  // return TRUE  unless you set the focus to a control
  135. }
  136.  
  137. void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
  138. {
  139.     if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  140.     {
  141.         CAboutDlg dlgAbout;
  142.         dlgAbout.DoModal();
  143.     }
  144.     else
  145.     {
  146.         CDialog::OnSysCommand(nID, lParam);
  147.     }
  148. }
  149.  
  150. // If you add a minimize button to your dialog, you will need the code below
  151. //  to draw the icon.  For MFC applications using the document/view model,
  152. //  this is automatically done for you by the framework.
  153.  
  154. void CTestDlg::OnPaint() 
  155. {
  156.     if (IsIconic())
  157.     {
  158.         CPaintDC dc(this); // device context for painting
  159.  
  160.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  161.  
  162.         // Center icon in client rectangle
  163.         int cxIcon = GetSystemMetrics(SM_CXICON);
  164.         int cyIcon = GetSystemMetrics(SM_CYICON);
  165.         CRect rect;
  166.         GetClientRect(&rect);
  167.         int x = (rect.Width() - cxIcon + 1) / 2;
  168.         int y = (rect.Height() - cyIcon + 1) / 2;
  169.  
  170.         // Draw the icon
  171.         dc.DrawIcon(x, y, m_hIcon);
  172.     }
  173.     else
  174.     {
  175.         CDialog::OnPaint();
  176.     }
  177. }
  178.  
  179. HCURSOR CTestDlg::OnQueryDragIcon()
  180. {
  181.     return (HCURSOR) m_hIcon;
  182. }
  183.  
  184. void CTestDlg::OnOK() 
  185. {
  186.     //Exit here!!!
  187.     
  188.     CDialog::OnOK();
  189. }
  190.  
  191. void CTestDlg::OnFileOpen() 
  192. {
  193. CFileDialog dlg(TRUE, NULL, NULL, 
  194.     OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_PATHMUSTEXIST,
  195.     "All Image Files|*.bmp;*.dib;*.jpg;*.pcd;*.tif;*.gif|"
  196.     "Bitmap Files|*.bmp|"
  197.     "DIB Files|*.dib|"
  198.     "JPEG Files|*.jpg|"
  199.     "PhotoCD Files|*.pcd|"
  200.     "TIFF Files|*.tif|"
  201.     "GIF Files|*.gif|"
  202.     "All Files|*.*||",
  203.     this);
  204.  
  205.     if (IDOK == dlg.DoModal())
  206.     {
  207.         CString csFile = dlg.GetPathName();
  208.  
  209.         //Load the file
  210.         m_ImageCtl.SetPicture((LPCTSTR) csFile);
  211.  
  212.         if ((m_ImageCtl.GetNumImageColors() > 256) &&
  213.             (m_ImageCtl.GetNumScreenColors() == 256))
  214.         {
  215.             //We need to do some color reduction on this image
  216.             m_ImageCtl.MedianCutQuant();
  217.         }
  218.  
  219.         //Refresh the file
  220.         m_ImageCtl.Refresh();
  221.     }
  222.     
  223. }
  224.  
  225. void CTestDlg::OnFilePrint() 
  226. {
  227.     m_ImageCtl.PrintImage();
  228. }
  229.  
  230. void CTestDlg::OnDevicePrinter() 
  231. {
  232.     long lColors = m_ImageCtl.GetNumPrinterColors();
  233.     CString cstemp;
  234.     cstemp.Format("Number of colors default printer supports is %d.",lColors);
  235.     AfxMessageBox(cstemp, MB_ICONINFORMATION);
  236. }
  237.  
  238. void CTestDlg::OnDeviceScreen() 
  239. {
  240.     long lColors = m_ImageCtl.GetNumScreenColors();
  241.     CString cstemp;
  242.     cstemp.Format("Number of colors the screen displays is %d.",lColors);
  243.     AfxMessageBox(cstemp, MB_ICONINFORMATION);
  244. }
  245.  
  246. void CTestDlg::OnHelpAboutnedimageocx() 
  247. {
  248.     m_ImageCtl.AboutBox();
  249. }
  250.  
  251. void CTestDlg::OnImageColorreductionErrordiffusion() 
  252. {
  253.     m_ImageCtl.ErrorDiffusionDither();
  254. }
  255.  
  256. void CTestDlg::OnImageColorreductionMediancut() 
  257. {
  258.     m_ImageCtl.MedianCutQuant();
  259. }
  260.  
  261. void CTestDlg::OnImageColorreductionOrdered() 
  262. {
  263.     m_ImageCtl.OrderedDither();
  264. }
  265.  
  266. void CTestDlg::OnImageFittypeBestfit() 
  267. {
  268.     m_ImageCtl.SetFitType(BESTFIT);
  269. }
  270.  
  271. void CTestDlg::OnImageFittypeHorizontalfit() 
  272. {
  273.     m_ImageCtl.SetFitType(HORZFIT);
  274. }
  275.  
  276. void CTestDlg::OnImageFittypeOnetoone() 
  277. {
  278.     m_ImageCtl.SetFitType(ONETOONE);
  279. }
  280.  
  281. void CTestDlg::OnImageFittypeVerticalfit() 
  282. {
  283.     m_ImageCtl.SetFitType(VERTFIT);
  284. }
  285.  
  286. void CTestDlg::OnImageImageheight() 
  287. {
  288.     long lHeight = m_ImageCtl.GetImageHeight();
  289.     CString cstemp;
  290.     cstemp.Format("Original Image Height is %d.",lHeight);
  291.     AfxMessageBox(cstemp, MB_ICONINFORMATION);
  292. }
  293.  
  294. void CTestDlg::OnImageImagewidth() 
  295. {
  296.     long lWidth = m_ImageCtl.GetImageWidth();
  297.     CString cstemp;
  298.     cstemp.Format("Original Image Width is %d.",lWidth);
  299.     AfxMessageBox(cstemp, MB_ICONINFORMATION);
  300. }
  301.  
  302. void CTestDlg::OnImageNumberofcolors() 
  303. {
  304.     long lColors = m_ImageCtl.GetNumImageColors();
  305.     CString cstemp;
  306.     cstemp.Format("Original Number of Image Colors is %d.",lColors);
  307.     AfxMessageBox(cstemp, MB_ICONINFORMATION);
  308. }
  309.  
  310. void CTestDlg::OnImageRotate180() 
  311. {
  312.     m_ImageCtl.Rotate180();
  313. }
  314.  
  315. void CTestDlg::OnImageRotate270() 
  316. {
  317.     m_ImageCtl.Rotate270();
  318. }
  319.  
  320. void CTestDlg::OnImageRotate90() 
  321. {
  322.     m_ImageCtl.Rotate90();
  323. }
  324.  
  325. void CTestDlg::OnSize(UINT nType, int cx, int cy) 
  326. {
  327.     CDialog::OnSize(nType, cx, cy);
  328.     
  329.     //Size the image ctl to the size of our window
  330.     m_ImageCtl.MoveWindow(0,0,cx,cy);
  331. }
  332.